#ifndef AECMODELER_INC_VERTSURF_H
#define AECMODELER_INC_VERTSURF_H

#include "zentity.h"
#include "zvector3d.h"

AECMODELER_NAMESPACE_BEGIN


class DllImpExp UeVertexSurfaceData : public UeEntity
{
public:
    UeVertexSurfaceData() : mpSurface(NULL), mpNext(NULL), mNormal(0,0,0) {}

    UeVertexSurfaceData(const UeEdge*);

    UeSurface*           surface() const                  { return mpSurface; }
    UeVertexSurfaceData* next   () const                  { return mpNext;    }
    const UeVector3d&    normal () const                  { return mNormal;   }

    void               setNext   (UeVertexSurfaceData* pVsd) { mpNext = pVsd; }
    void               setSurface(UeSurface*           s)    { mpSurface = s; }
    void               transform (const UeTransf3d&    t)    { mNormal  *= t; }


    void            print     (FILE* = NULL)         const; // Not for public use
    void            save      (UeSaveRestoreCallback*) const; // Not for public use
    void            restore   (UeSaveRestoreCallback*);       // Not for public use

private:

    UeSurface*           mpSurface; 
    UeVertexSurfaceData* mpNext;  
    UeVector3d           mNormal;  // Direction of the surface normal at the vertex
//  Point2d            mParamPoint;

}; // class VertexSurfaceData


AECMODELER_NAMESPACE_END
#endif
